Notifications
Clear all

Copiar conteúdo de diversos arquivos em uma única sheet

28 Posts
3 Usuários
0 Reactions
3,936 Visualizações
(@ericksant)
Posts: 0
New Member
Topic starter
 

Pessoal,
boa tarde!

Estou com uma nova dúvida, tenho uma pasta específica com diversos arquivos em excel, eu precisava copiar o conteúdo de todos arquivos e copiar em uma planilha específica. (Eu faço esse trabalho na mão, copio todo o conteúdo do primeiro arquivo, depois vou até a última linha e copio o seguinte e assim vai...)

Precisava de uma forma automática... Vi alguns tópicos aqui mas não achei nenhum que pegava de arquivos diferentes...

Alguém consegue me ajudar ?
Obrigado!

 
Postado : 25/04/2018 1:49 pm
(@ericksant)
Posts: 0
New Member
Topic starter
 

Funcionou!
Cara, me desculpe minha ignorancia, mas você poderia me explicar a lógica do código ? Pois precisarei utilizá-los para somar outras colunas...

Dim ul As Double
    Dim i As Long
    ul = 0
    'da linha 3 até a ultima linha preenchida
    For i = 3 To Planilha2.UsedRange.Rows.Count
        'verifica se a linha não está oculta
        If Planilha2.Rows(i).Hidden = False Then
            'verifica se a célula não está em branco
            If Planilha2.Range("AV" & i).Value <> "" Then
                'soma o valor
                ul = ul + Planilha2.Range("AV" & i).Value
                
            End If
            
        End If
    Next i
    'coloca a soma na célula d16 da Planilha1
    Planilha1.Range("D16").Value = ul

Minha dúvida são nas variaveis, por que começam com esses valores ? E para outras colunas, posso utilizar essa lógica e só mudar o range, exemplo de "av" para outra?

OBRIGADO!

 
Postado : 27/04/2018 7:29 am
(@klarc28)
Posts: 0
New Member
 

A variável ul guarda o valor da soma. Ela deve começar valendo zero.
A variável i guarda o número da linha. Ela deve começar a partir da primeira linha que tem dado, excluindo a linha de cabeçalho.
Basta trocar de AV para a(s) letra(s) da coluna desejada.

 
Postado : 27/04/2018 7:36 am
(@ericksant)
Posts: 0
New Member
Topic starter
 

Bom dia,

Reparei que o total que a macro puxa, não é o mesmo se eu fizesse fora da macro, veja as fotos... Não consigo entender, é como se não estivesse puxando alguma linha...

Veja as fotos:

[url]
https://ibb.co/fyh4eH
https://ibb.co/bFYMRx
[/url]

 
Postado : 27/04/2018 8:12 am
(@ericksant)
Posts: 0
New Member
Topic starter
 

Consegui achar o erro, mas ainda não sei como corrigir, a macro ela soma os valores sem somar as casas decimais...
Por esse motivo o valor que o excel soma da um resultado e a macro outra...

 
Postado : 27/04/2018 9:44 am
(@klarc28)
Posts: 0
New Member
 

Aqui os valores ficaram idêntico.

Em todo caso, tente fazer esta alteração:

                ul = ul + CDbl(Planilha2.Range("AV" & i).Value)
 
Postado : 27/04/2018 9:52 am
(@ericksant)
Posts: 0
New Member
Topic starter
 

O problema é por conta do arredondamento, tentei utilizar o 'ul = round(ul, 2)' mas não funcionou...
O excel de forma automatica arredonda os valores quando vc soma o conteúdo de uma coluna... A macro não está fazendo isso com os valores puxados do filtro...

 
Postado : 27/04/2018 9:57 am
(@klarc28)
Posts: 0
New Member
 
Sub SomaDaColunaAV()
    
    Dim ul As Double
    Dim i As Long
    ul = 0
    'da linha 3 até a ultima linha preenchida
    For i = 3 To Planilha1.UsedRange.Rows.Count
        'verifica se a linha não está oculta
        If Planilha1.Rows(i).Hidden = False Then
            'verifica se a célula não está em branco
            If Planilha2.Range("AV" & i).Value <> "" Then
                'soma o valor
                ul = ul + Planilha2.Range("AV" & i).Value
                
            End If
            
        End If
    Next i
    'coloca a soma na célula d16 da Planilha1
    Planilha1.Range("D16").Value = ul
    Planilha1.Range("D16").NumberFormat = "0"
End Sub
 
Postado : 27/04/2018 10:08 am
(@ericksant)
Posts: 0
New Member
Topic starter
 

Mesmo com essa especificação no código o erro persiste... Bizarro.
Total da macro: 1810448,4
Total do excel: 1810657,89

:(

 
Postado : 27/04/2018 12:16 pm
(@klarc28)
Posts: 0
New Member
 
Sub Macro4()
Dim DLin As Long
DLin = Sheets("Fiscal").Range("AV3").End(xlDown).Row
    
    Sheets("Contábil x Fiscal").Range("D16").Formula = "=SUM(Fiscal!AV3:AV" & DLin & ")"
    
End Sub
 
Postado : 27/04/2018 9:18 pm
(@ericksant)
Posts: 0
New Member
Topic starter
 
Sub SomaDaColunaAV_Matriz()
    
    'Dim ul As Double
    'Dim i As Long
    'ul = 0
    Dim DLin As Long
 
    'da linha 3 até a ultima linha preenchida
    'For i = 3 To Planilha3.UsedRange.Rows.Count
        'verifica se a linha não está oculta
        'If Planilha3.Rows(i).Hidden = False Then
            'verifica se a célula não está em branco
            'If Planilha3.Range("AV" & i).Value <> "" Then
                'soma o valor
                'ul = ul + Planilha3.Range("AV" & i).Value
        
             
            'End If
            
        'End If
    'Next i
    
    DLin = Sheets("Fiscal").Range("AV3").End(xlDown).Row
    Sheets("Contábil x Fiscal ").Range("D16").Formula = "=SUM(Fiscal!AV3:AV" & DLin & ")"
    'coloca a soma na célula d16 da Planilha1
    'Planilha1.Range("D16").Value = ul
    'Planilha1.Range("D16").NumberFormat = "0"
    Sheets("Fiscal").Select
    Cells.Select
    Selection.AutoFilter

Eu fiz um teste com essa nova lógica, mas ela pega a soma da coluna inteira contando a partir da célula AV3... Não pega a coluna com o filtro setado...

 
Postado : 30/04/2018 5:29 am
(@klarc28)
Posts: 0
New Member
 

No final da macro que faz o filtro, antes de END SUB, coloque apenas isto:

DLin = Sheets("Fiscal").Range("AV3").End(xlDown).Row
    Sheets("Contábil x Fiscal ").Range("D16").Formula = "=SUM(Fiscal!AV3:AV" & DLin & ")"

Retire a linha:

Call SomaDaColunaAV_Matriz

Se der erro aqui:

Sheets("Contábil x Fiscal ")

Troque por:

Sheets("Contábil x Fiscal")

Pois há um espaço em branco depois da palavra Fiscal.

Mas, se não der mensagem de erro no código, e continuar dando erro no cálculo. Aí já não sei mais o que fazer. Nesse caso, vou deixar com outro usuário.

 
Postado : 30/04/2018 11:08 am
(@ericksant)
Posts: 0
New Member
Topic starter
 

Mesmo colocando antes do código onde seta os filtros, o erro persiste, ele seta os filtros do meu código, mas na hora de setar o somatório, ele faz da coluna inteira, ignorando os filtros...

 
Postado : 02/05/2018 7:14 am
(@ericksant)
Posts: 0
New Member
Topic starter
 

Galera, bom dia,

Consegui ajuda procurando na internet, segue o código funcionando perfeitamente.

Dim ul As Double
    'Dim i As Long
    ul = 0
    Dim lUltimaLinhaAtiva As Long
    'da linha 3 até a ultima linha preenchida
    
    lUltimaLinhaAtiva = Planilha3.Cells(Planilha3.Rows.Count, 3).End(xlUp).Row
    
    For i = 3 To lUltimaLinhaAtiva
        'verifica se a linha não está oculta
        If Planilha3.Rows(i).Hidden = False Then
            'verifica se a célula não está em branco
            If Planilha3.Range("AV" & i).Value <> "" Then
                'soma o valor
                ul = ul + Planilha3.Range("AV" & i).Value
        
                
            End If
            
        End If
    Next i
    'coloca a soma na célula d16 da Planilha1
    Planilha1.Range("D16").Value = ul
    Planilha1.Range("D16").NumberFormat = "#,##0.00"

Obrigado pela ajuda de todos!

 
Postado : 07/05/2018 9:47 am
Página 2 / 2